package com.wf.demo.info.dao;


import com.wf.demo.info.pojo.Company;
import com.wf.demo.info.pojo.Device;
import com.wf.demo.info.pojo.Model;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface DeviceDAO extends JpaRepository<Device,Long> {

    //根据公司查找所有的设备的page方法
    Page<Device> findByCompany(Company company, Pageable pageable);
    Page<Device> findByIsOnline(Boolean isOnline, Pageable pageable);
    //查找所有在线设备的方法
    List<Device> findByIsOnline(Boolean isOnline);

    //根据公司查找所有设备的方法 ，按id排序
    List<Device> findByCompanyOrderById(Company company);
    //根据公司查找所有在线设备的方法 ，按id排序
    List<Device> findByCompanyAndIsOnline(Company company,boolean isOnline);

    //北斗id查找单个设备
    Device findByBeidouId(Long beidouId);
    //控制系统编号查找单个设备
    Device findByCsNumber(String csNumber);
    /******************公司*****************/
    //某公司下所有设备数量
    Long countByCompany(Company company);
    Long countByCompanyAndModel(Company company,Model model);
    //在线数
    Long countByCompanyAndIsOnline(Company company,Boolean isOnline );
    //报警或正常或报废
    Long countByCompanyAndStatusAndIsOnline(Company company,int status,Boolean isOnline);
    /****************机型*****************/
    //某机型下所有设备数量
    Long countByModel(Model model);
    //在线数
    Long countByModelAndIsOnline(Model model,Boolean isOnline);
    //报警或正常或报废
    Long countByModelAndStatusAndIsOnline(Model model,int status,Boolean isOnline);

    Page<Device> findAll(Specification specification,Pageable pageable);

    List<Device> findAll(Specification<Device> specification, Sort sort);

    List<Device> findByStatus(int status);
}
